import numpy as np
import pandas as pd

arr = np.random.randint(0, 10, size=(5, 3))
df = pd.DataFrame(arr, columns=['A', 'B', 'C'], index=['a', 'b', 'c', 'd', 'e'])
# print(df)


# 读取某一列的数据
# print(df['A'])
# print(df.A)

# 获得多列的数据
# print(df[['A', 'C']])

# 获取某一行行数据
# print(df.loc['a'])
# df.loc也支持指定行和列进行数据的获取，返回的是一个DataFrame
# print(df.loc[['a', 'b'], ['A', 'C']])

# 使用数字来进行行列的选择，需要使用df.iloc
# print(df.iloc[[0, 1], [0, 2]])
# 使用数字进行选择的时候，也可以指定行和列的范围
# 也可以使用切片去做：起始位置:末位置:步长 --> 左闭右开[1,2)
# print(df.iloc[2:5:2, 0:3:1])

# 手动创建新的一列
df['D'] = [6, 6, 6, 6, 6]
# print(df)
# 也可以使用df.assign(列名=[值])表示为新加一列
df = df.assign(E=[7, 7, 7, 7, 7])
# print(df)

# 删除某一列: df.drop()
# 如果需要df.drop生效有两个用法：
# 1 df = df.drop(columns='列名')
# 2 df.drop(columns='列名', inplace=True)
# inplace=True表示在原数据上进行修改，不返回新的数据
df.drop(columns='E', inplace=True)
print(df)